package com.cloudservice.ccs.biz;

import com.cloudservice.ccs.entity.Session;
import com.cloudservice.ccs.entity.VisitorInfo;
import com.cloudservice.ccs.exception.CustomerServiceDesignationException;

public interface ICustomerServiceDesignationBiz {

    /**
     * 分配客服。
     * @param visitorInfo 访客信息
     * @return 分配到的客服 id
     * @throws CustomerServiceDesignationException 若分配失败
     */
    Integer designateCustomerService(VisitorInfo visitorInfo);

    /**
     * 分配客服并构造会话对象。<b>注意：此方法不会将构造的会话存入数据库，需要手动操作。</b>
     * @param visitorInfo 访客信息
     * @return 构造的会话对象
     * @throws CustomerServiceDesignationException 若客服分配失败
     */
    Session getSession(VisitorInfo visitorInfo);

    /**
     * （查找或）创建会话，返回一个有效的会话 id。
     * @param visitorInfo 访客信息
     * @return 查找或创建的有效的会话 id。
     * @throws CustomerServiceDesignationException 若没有查找到现有的会话，且创建会话时客服分配失败
     */
    Integer createSession(VisitorInfo visitorInfo);
}
